/**
 * mysql 创建连接池
 * @docs https://github.com/mysqljs/mysql
 */
const mysql = require('mysql');
const config = require('./config');
const pool = mysql.createPool(config)


/**
 * mysql 通用查询方法
 * @param {sql:String, params:Array}
 */
const query = (options) => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            if (err) {
                // 连接失败，抛出异常
                reject(err);
            } else {
                if (options.params) {
                    // 执行查询 - 带参数
                    connection.query(options.sql, options.params, (error, results) => {
                        if (error) {
                            // 抛出异常
                            reject(error);
                        } else {
                            // await接收结果
                            resolve(results);
                        }
                        pool.releaseConnection(connection);
                    });
                } else {
                    // 执行查询 - 无参数
                    connection.query(options.sql, (error, result) => {
                        if (error) {
                            // 抛出异常
                            reject(error);
                        } else {
                            // await接收结果
                            resolve(result);
                        }
                        pool.releaseConnection(connection);
                    });
                }
            }
        });
    });
}


module.exports = {
    query
}